﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Xml.Linq;
using System.IO;
using System.Web.Hosting;

namespace FlyingCircusWebIS.Models
{
    /**
     * Manipulação de arquivo XML feita parcialmente com base no turorial:
     * http://www.devmedia.com.br/utilizando-linq-e-extensions-methods-para-a-leitura-de-arquivos-xml/27149
     * 
     */
    public class MidiaSocialDAO: IMidiaSocialDAO
    {
        public string CaminhoArquivoXML { get; set; }

        public MidiaSocialDAO()
        {
            CaminhoArquivoXML = HostingEnvironment.MapPath(@"~/App_Data/MidiaSocialConfiguracao.xml");
        }

        public MidiaSocial Ler()
        {
            try
            {
                XDocument XML = XDocument.Load(CaminhoArquivoXML);
                XElement elementoMidiaSocial = XML.Element("MidiaSocial");

                MidiaSocial midiaSocial = new MidiaSocial();
                midiaSocial.NomeApareceEmail = elementoMidiaSocial.Element("NomeApareceEmail").Value;
                midiaSocial.EnderecoEmail = elementoMidiaSocial.Element("EnderecoEmail").Value;
                midiaSocial.HostEmail = elementoMidiaSocial.Element("HostEmail").Value;
                midiaSocial.PortaEmail = elementoMidiaSocial.Element("PortaEmail").Value;
                midiaSocial.SenhaEmail = elementoMidiaSocial.Element("SenhaEmail").Value;
                midiaSocial.ConexaoSSLEmail = elementoMidiaSocial.Element("ConexaoSSLEmail").Value;
                midiaSocial.MensagemAtivacaoCadastro = elementoMidiaSocial.Element("MensagemAtivacaoCadastro").Value;
                midiaSocial.AssuntoAtivacaoCadastro = elementoMidiaSocial.Element("AssuntoAtivacaoCadastro").Value;
                midiaSocial.MensagemCancelamentoReserva = elementoMidiaSocial.Element("MensagemCancelamentoReserva").Value;
                midiaSocial.AssuntoCancelamentoReserva = elementoMidiaSocial.Element("AssuntoCancelamentoReserva").Value;
                midiaSocial.MensagemConfirmacaoReserva = elementoMidiaSocial.Element("MensagemConfirmacaoReserva").Value;
                midiaSocial.AssuntoMensagemConfirmacaoReserva = elementoMidiaSocial.Element("AssuntoMensagemConfirmacaoReserva").Value;
                midiaSocial.FacebookAppId = elementoMidiaSocial.Element("FacebookAppId").Value;
                midiaSocial.FacebookAppSecret = elementoMidiaSocial.Element("FacebookAppSecret").Value;
                midiaSocial.FacebookAccessToken = elementoMidiaSocial.Element("FacebookAccessToken").Value;
                midiaSocial.FacebookPostUrl = elementoMidiaSocial.Element("FacebookPostUrl").Value;
                return midiaSocial;
            }
            catch (Exception)
            {
                return null;
            }
        }

        public void Atualizar(MidiaSocial entidade)
        {
            XDocument XML = XDocument.Load(CaminhoArquivoXML);
            XElement elementoMidiaSocial = XML.Element("MidiaSocial");

            elementoMidiaSocial.Element("NomeApareceEmail").Value = entidade.NomeApareceEmail;
            elementoMidiaSocial.Element("EnderecoEmail").Value = entidade.EnderecoEmail;
            elementoMidiaSocial.Element("HostEmail").Value = entidade.HostEmail;
            elementoMidiaSocial.Element("PortaEmail").Value = entidade.PortaEmail;
            elementoMidiaSocial.Element("SenhaEmail").Value = entidade.SenhaEmail;
            elementoMidiaSocial.Element("ConexaoSSLEmail").Value = entidade.ConexaoSSLEmail;
            elementoMidiaSocial.Element("MensagemAtivacaoCadastro").Value = entidade.MensagemAtivacaoCadastro;
            elementoMidiaSocial.Element("AssuntoAtivacaoCadastro").Value = entidade.AssuntoAtivacaoCadastro;
            elementoMidiaSocial.Element("MensagemCancelamentoReserva").Value = entidade.MensagemCancelamentoReserva;
            elementoMidiaSocial.Element("AssuntoCancelamentoReserva").Value = entidade.AssuntoCancelamentoReserva;
            elementoMidiaSocial.Element("MensagemConfirmacaoReserva").Value = entidade.MensagemConfirmacaoReserva;
            elementoMidiaSocial.Element("AssuntoMensagemConfirmacaoReserva").Value = entidade.AssuntoMensagemConfirmacaoReserva;
            elementoMidiaSocial.Element("FacebookAppId").Value = entidade.FacebookAppId;
            elementoMidiaSocial.Element("FacebookAppSecret").Value = entidade.FacebookAppSecret;
            elementoMidiaSocial.Element("FacebookAccessToken").Value = entidade.FacebookAccessToken;
            elementoMidiaSocial.Element("FacebookPostUrl").Value = entidade.FacebookPostUrl;

            XML.Save(CaminhoArquivoXML);
        }
    }
}
